package cn.px.dao.dto.purchase;

import cn.px.common.bean.BaseDTO;
import cn.px.common.validation.group.UpdateGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @Description 采购明细DTO
 * @author 品讯科技
 * @date 2024-08
 * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class PurchaseListDTO extends BaseDTO implements Serializable {

    /**
     * 主键
     */
    @NotNull(groups = {UpdateGroup.class}, message = "ID不能为空")
    private String id;
    /**
     * 总需求计划主键
     */
    private String demandPlanId;
    /**
     * 采购计划主键
     */
    private String purchasePlanId;
    /**
     * 采购申请ID
     */
    private String purchaseApplyId;
    /**
     * 采购单ID
     */
    private String purchaseOrderId;
    private String purchaseOrderNo;
    /**
     * 物品ID
     */
    private String goodsId;
    private String parentGoodsId;
    /**
     * 编号
     */
    private String no;
    /**
     * 类别
     */
    private String type;
    /**
     * 名称
     */
    private String name;
    /**
     * 规格
     */
    private String specs;
    /**
     * 单位
     */
    private String unit;
    /**
     * 单价
     */
    private BigDecimal price;
    /**
     * 综合单价
     */
    private BigDecimal integratedPrice;
    /**
     * 数量
     */
    private BigDecimal quantity;
    /**
     * 原申请数量
     */
    private BigDecimal originQuantity;
    /**
     * 入库数量
     */
    private BigDecimal inStoreQuantity;
    /**
     * 币种
     */
    private Integer moneyType;
    /**
     * 汇率
     */
    private BigDecimal exchangeRate;
    /**
     * 美元汇率
     */
    private BigDecimal dollarExchangeRate;
    private BigDecimal accountExchangeRate;
    /**
     * 美元
     */
    private BigDecimal accountTotalMoney;
    /**
     * 美元
     */
    private BigDecimal accountPrice;
    /**
     * 总价
     */
    private BigDecimal totalMoney;
    /**
     * 税率
     */
    private BigDecimal taxRate;
    /**
     * 税额
     */
    private BigDecimal taxMoney;
    /**
     * 品牌
     */
    private String brand;
    /**
     * 适用车型
     */
    private String suitableModel;
    /**
     * 车架号
     */
    private String vin;
    /**
     * 发动机号
     */
    private String engineNum;
    /**
     * 折扣
     */
    private BigDecimal discount;
    /**
     * 已购数量
     */
    private BigDecimal boughtQuantity;
    /**
     * 已到数量
     */
    private BigDecimal arrivedQuantity;
    /**
     * 未到数量
     */
    private BigDecimal notArriveQuantity;
    /**
     * 已用金额
     */
    private BigDecimal usedMoney;
    /**
     * 已发运数量
     */
    private BigDecimal dispatchedQuantity;
    /**
     * 未发运数量
     */
    private BigDecimal notDispatchQuantity;
    /**
     * 产地
     */
    private Integer producePlace;
    /**
     * 重量
     */
    private BigDecimal weight;
    /**
     * 体积
     */
    private BigDecimal volume;
    /**
     * 外形尺寸
     */
    private String dimension;
    /**
     * 供应商ID
     */
    private String supplierId;
    /**
     * 供应商名称
     */
    private String supplierName;
    /**
     * 供应商单价
     */
    private BigDecimal supplyPrice;
    /**
     * 供应商总额
     */
    private BigDecimal supplyTotalMoney;
    /**
     * 合同ID
     */
    private String contractId;
    private String contractMainListId;
    /**
     * 备注
     */
    private String remark;
    /**
     * 状态:从采购计划到采购单
     */
    private Integer status;
    /**
     * 临时
     */
    private String tempFlag;
    /**
     * 创建人
     */
    private String createdUserId;
    /**
     * 创建人名称
     */
    private String createdUserName;
    /**
     * 创建时间
     */
    private LocalDateTime createdTime;
    /**
     * 创建时间开始
     */
    private LocalDateTime createdTimeStart;
    /**
     * 创建时间结束
     */
    private LocalDateTime createdTimeEnd;
    /**
     * 更新人
     */
    private String updateUserId;
    /**
     * 更新人名称
     */
    private String updateUserName;
    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
    /**
     * 更新时间开始
     */
    private LocalDateTime updateTimeStart;
    /**
     * 更新时间结束
     */
    private LocalDateTime updateTimeEnd;
    /**
     * 关键字
     */
    private String keyword;

    private String goodsIdNot;

    /**
     * ids
     */
    private List<String> ids;

    private String attr;

    /**
     * 节点 和status值同用
     */
    private Integer node;
    private Integer tempStore;

    private Boolean storeOrigin;

    /**
     * 原采购单ID
     */
    private String originOrderId;

    private List<String> purchaseOrderIdList;
}
